home *** CD-ROM | disk | FTP | other *** search
/ The Glitch Apple Disk Collection / 2014.glitch.apple.collection.zip / indexed / CRKUTIL1.DSK / AD TECH NOTES.txt < prev    next >
Text File  |  2014-09-09  |  16KB  |  375 lines

  1.                          TECH-NOTES FOR
  2.                      Advanced Demuffin 1.1
  3.  
  4.                           Written  by
  5.                            The Stack
  6.  
  7.                          Copyright 1983
  8.                        Corrupt Computing
  9.  
  10. If you want source code for any of Corrupt Computing's line of
  11. utilities, just contact THE INSPECTOR on THE TWILIGHT PHONE.
  12.  
  13. ================================================================
  14.  
  15. ZERO PAGE LOCATIONS
  16.  
  17.   $22  WNDTOP   These 2 zero page locations, WNDTOP and WNDBTM,
  18.   $23  WNDBTM    are used so that the character that the
  19.                  character output routines in the monitor will
  20.                  output characters only in the window below the
  21.                  first 3 lines and above the bottom 2 lines.
  22.                  The top 3 and bottom 2 lines are used for title
  23.                  lines and status display.  These locations
  24.                  should be restored to normal upon return from
  25.                  your RWTS if it uses them, although most RWTS's
  26.                  don't use these reserved monitor locations.
  27.  
  28.  
  29.   $26  GBASL    These 2 zero page locations are used by many
  30.   $27  GBASH     routines throughout Advanced Demuffin, such as
  31.                  the PRINT routine and the routines to display
  32.                  the status codes on the disk map, but they do
  33.                  not need to be saved before going to your RWTS.
  34.                  Many RWTS's, including RWTS 3.3, use these
  35.                  locations in several places.
  36.  
  37.  
  38.   $36  CSWL     CSWL and CSWH should always point to the address
  39.   $37  CSWH      of the current character output routine.
  40.                  Advanced Demuffin sets these locations to point
  41.                  to $FDF0, the standard character output
  42.                  routine.  Note that the outputed characters
  43.                  will no longer go through DOS as there may be
  44.                  no DOS in the machine.  Advanced Demuffin
  45.                  changes the contents of these locations to
  46.                  point to $Cx00 when a number from 1-7 is
  47.                  pressed during a conversion or after a
  48.                  conversion is completed, where x is the number
  49.                  pressed.  These locations should be restored to
  50.                  point to $FDF0 if your RWTS uses them in any
  51.                  way.  Most RWTS's, including RWTS 3.3, don't
  52.                  use them at all.
  53.  
  54.  
  55.   $4A  TEMP1    Although most RWTS's don't use these locations,
  56.   $4B  TEMP2     they are used as scratch locations by Advanced
  57.   $4C  TEMP3     Demuffin and are VERY IMPORTANT!  Be sure and
  58.                  save them if your RWTS even looks at them.  The
  59.                  most important location to save is $4B, which
  60.                  contains the page number that the current
  61.                  sector is being loaded into.  Note that this is
  62.                  a duplicate of the X register upon entry into
  63.                  the user's IOB module at $1400.
  64.  
  65.  
  66. PRE-PROGRAM NON-ZERO PAGE LOCATIONS
  67.  
  68.  $200  BUF      Page 2, the character input buffer, is used as a
  69.                  buffer to hold the file name of the RWTS or IOB
  70.                  module to be loaded.  This page may be used by
  71.                  your RWTS, but your RWTS may not reside in the
  72.                  area between $200-$21E (unless you don't plan
  73.                  on loading anything), as this portion of page 2
  74.                  will be destroyed upon a load.
  75.  
  76.  
  77.  $3F2  RESET    Advanced Demuffin sets this pointer to pnint to
  78.                  $FF59.  This means that whenever the RESET key
  79.                  is pressed, the Apple will jump into the
  80.                  monitor.  If this is not desired, $12C9 (low
  81.                  byte) and $12CE (high byte) may be changed to
  82.                  have the RESET key go wherever you want it to
  83.                  go including $801 (Advanced Demuffin entry).
  84.                  $12C9 normally contains a $59 and $12CE
  85.                  normally contains an $FF.
  86.  
  87.  
  88.  $3F5  AMPVEC   Advanced Demuffin sets up these locations to
  89.  $3F8  CTYVEC    jump to the Advanced Demuffin entry point
  90.                  ($801) when Applesoft recieved the "&" command
  91.                  and when the monitor recieved the CTRL-Y
  92.                  command.  This provides a useful way to get
  93.                  back into Advanced Demuffin after exit.
  94.  
  95.  
  96.  $400-$7FF      Many times Advanced Demuffin displays data and
  97.                  status marks on the screen by storing this data
  98.                  directly into this area of memory.  This
  99.                  includes all marks on both the track map and
  100.                  the disk map as well as numbers on the bottom
  101.                  screen line, and dashes and other messages on
  102.                  the 3rd and 23rd lines.
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109. INTER-PROGRAM LOCATIONS
  110.  
  111.  $800           This is the location where Advanced Demuffin is
  112.                  designed to run at.  This location contains an
  113.                  $EA (NOP) as the byte at $800 is often replaced
  114.                  by a $00.  This is NOT the entry point to
  115.                  Advanced Demuffin ($801 is the entry) although
  116.                  if there is an $EA here it won't make any
  117.                  difference if you use this as the entry.
  118.  
  119.  
  120.  $801  START0   This is the entry point to Advanced Demuffin 1.1
  121.                  where there are two instructions, SEI and CLD,
  122.                  before the actual START of Advanced Demuffin.
  123.  
  124.  
  125.  $803  START    This is the actual start of the program which
  126.                  sets CSWL and CSWH to point to the monitor
  127.                  routine COUT1, sets the RESET, AMPVEC, and
  128.                  CTYVEC as mentioned above (see appropriate
  129.                  label), sets the full screen as a window except
  130.                  for the top 3 and the bottom 2 lines, clears
  131.                  the screen, puts the title at the top, the
  132.                  status line at bottom, and starts off the
  133.                  program by displaying the menu.
  134.  
  135.  
  136.  $F1E  IOB      This is the IOB that Advanced Demuffin uses when
  137.                  it uses RWTS.  The built-in IOB module (IOB33)
  138.                  which is described below, as well as the
  139.                  default user IOB module (at $1400) also use
  140.                  this IOB.  The default contents of this IOB are
  141.                  described in detail below:
  142.  
  143.  $F1E:01 60     IOB      DFB $01,$60
  144.  $F20:01        DRIVE    DFB $01
  145.  $F21:00        VOLUME   DFB $00
  146.  $F22:00        TRACK    DFB $00
  147.  $F23:00        SECTOR   DFB $00
  148.  $F24:2F 0F              DW DCT
  149.  $F26:00        DPAGL    DFB $00
  150.  $F27:80        DPAG     DFB $80
  151.  $F28:00 00              DFB $00,$00
  152.  $F2A:01        CODE     DFB $01
  153.  $F2B:00        ERROR    DFB $00
  154.  $F2C:00 60 01           DFB $00,$60,$01
  155.  $F2F:00 01     DCT      DFB $00,$01
  156.  $F31:EF D8              DFB $EF,D8
  157.  
  158. Note that the slot number used by Advanced Demuffin could easily
  159.  be changed bu changing $F1F to the $x0 where x is the slot
  160.  number of the desired drive.
  161.  
  162.  
  163.  $F33  IOB33    This is the built-in IOB module used to write to
  164.                  3.3 formatted disks.  A disassembled listing of
  165.                  it is included below:
  166.  
  167.  $F33- IOB33  STY SECTOR    ;Store sector
  168.  $F36-        STX DPAG      ;and page number
  169.  $F39-        LSR A         ;Convert phase # to track #
  170.  $F3A-        STA TRACK     ;and store it
  171.  $F3D-        LDA DRV       ;Check # of drives
  172.  $F40-        STA DRIVE     ;and store it as drive to write to
  173.  $F43- THERE  LDA #2        ;Set command code to write
  174.  $F45-        STA CODE      ;and store it
  175.  $F48-        JSR GORWTS    ;and go to 3.3 RWTS to write it
  176.  $F4B-        LDA #1        ;Restore read
  177.  $F4D-        STA CODE      ;command code
  178.  $F50-        LDA ERROR     ;Check for an error
  179.  $F53-        BCC RTS4      ;Exit if none
  180.  $F55-        CMP #$10      ;Write protect error?
  181.  $F57-        SEC           ;Keep carry set
  182.  $F58-        BNE RTS4      ;Not write protect, exit w/carry set
  183.  $F5A-        LDY #$27      ;Display write protected
  184.  $F5C- MOV4   LDA WPER1,Y   ;error message
  185.  $F5F-        STA SCLN1,Y   ;and ask whether
  186.  $F62-        LDA WPER2,Y   ;to continue or
  187.  $F65-        STA SCLN2,Y   ;start over
  188.  $F68-        DEY
  189.  $F69-        BPL MOV4
  190.  $F6B-        JSR PRINT     ;Print 3 beeps
  191.  $F6E-        DFB $07,$07,$87
  192.  $F71- KEY10  JSR KEYIN     ;Read a key - go back to menu if esc
  193.  $F74-        CMP #$C3      ;Continue?
  194.  $F76-        BEQ CONTIN    ;Yes, branch
  195.  $F78-        CMP #$D3      ;Start over?
  196.  $F7A-        BNE KEY10     ;No
  197.  $F7C-        PLA           ;Yes
  198.  $F7D-        PLA           ;Pull return address off stack
  199.  $F7E-        JSR REPLNS    ;Replace top 2 lines w/ title lines
  200.  $F81-        JMP GOTVAL    ;Starts over
  201.  $F84- CONTIN JSR REPLNS
  202.  $F87-        BMI THERE     ;Always taken
  203.  
  204.  
  205. $13FA-$13FB     These 2 bytes are unused
  206.  
  207.  
  208. $13FC-$13FF     These 4 bytes are reserved for the address and
  209.                  the length of the IOB module when it is being
  210.                  loaded.  Advanced Demuffin loads the first
  211.                  sector from the track/sector list of the IOB
  212.                  module at $13FC.  Since the first 4 bytes of
  213.                  this sector contain the address and the length
  214.                  of the file, those bytes reside in these
  215.                  locations.  Therefore, the actual IOB module
  216.                  will start at $1400 (just below).
  217. $1400  IOBM     This is the user IOB module.  The LOAD NEW IOB
  218.                  MODULE will load a file into this area (see
  219.                  above).  A disassembled listing of the default
  220.                  user IOB module is included in the main manual.
  221.  
  222.  
  223. $1419-$14FB     These bytes between the user IOB module and RWTS
  224.                  3.3 are left free for an IOB module longer than
  225.                  the default one.  This allows an IOB module to
  226.                  take up as much as $FC bytes total.
  227.  
  228.  
  229. $14FC-$14FF     These 4 bytes are unused.
  230.  
  231.  
  232. $1500-$1CDB     RWTS 3.3 resides in this area of memory.  It is
  233.                  just standard RWTS that has been relocated to
  234.                  run at this address.  Advanced Demuffin uses
  235.                  the entry at $1A00.
  236.  
  237.  
  238. Below are some other locations used as scratch by Advanced
  239.  Demuffin.  These may be looked at by your IOB module in
  240.  determining various options about how it is to read sectors
  241.  from the source disk if desired.
  242.  
  243. $1CE0  SCVER    This location contains either a $0C or a $0F
  244.                  for 13 and 16 sector modes, respectively.
  245.  
  246. $1CE1  STPHS    This location contains phase number to start
  247.                  reading data from the disk with.  It defaults
  248.                  to $00.  (Since it is a phase #, a $01 would
  249.                  mean track .5, etc.)
  250.  
  251. $1CE2  ENPHS    ENPHS is the same as STPHS except that it
  252.                  contains the last phase to read data from.
  253.  
  254. $1CE3  STSEC    STSEC contains the first sector within the phase
  255.                  specified by STPHS that data should be read
  256.                  from.
  257.  
  258. $1CE4  ENSEC    ENSEC contains the last sector within the phase
  259.                  specified by ENPHS that data should be read
  260.                  from.
  261.  
  262. $1CE5  CRPHS    This location contains the current phase that
  263.                  data is being read from.
  264.  
  265. $1CE6  CRSEC    This location contains the current sector that
  266.                  data is being read from.
  267.  
  268. $1CE7  BGSEC    BGSEC contains the sector number within the
  269.                  phase specified by BGPHS (below) that data has
  270.                  started being read from this pass.  i.e. If you
  271.                  are converting an entire 16 sector disk with
  272.                  the default options and the default buffer size
  273.                  ($70 pages), during the first pass BGPHS and
  274.                  BGSEC will both contain a $00 (phase 00, sector
  275.                  00 was the start phase, sector in this pass).
  276.                  During the second pass, BGPHS and BGSEC will
  277.                  contain $0E and $00, respectively.  (The second
  278.                  pass started with track 07, sector 00 and track
  279.                  07 is phase $0E).
  280.  
  281. $1CE8  BGPHS    See above.
  282.  
  283. $1CE9  BYPHS    This byte contains the increment in phases.
  284.                 i.e. The default increment, 1.0, would be $02.
  285.  
  286. $1CEA  NRETRY   This byte contains the maximum number of retries
  287.                  (normally $01).
  288.  
  289. $1CEB  RETRY    This byte is used as a counter counting down
  290.                  from the maximum number of retries to $00.  On
  291.                  the first attempt to read a sector, RETRY will
  292.                  equal NRETRY.  If the carry is set upon return
  293.                  from the user's IOB module, RETRY will be
  294.                  decreased.  If it is less than zero, a read
  295.                  error will result.  If not, a read will be re-
  296.                  attempted.  This process will continue until
  297.                  the sector either reads correctly or until
  298.                  RETRY is less than zero.
  299.  
  300. $1CEC  DRV      This location contains either a one or a two
  301.                  respective to the number of drives being used.
  302.                  The built-in IOB module uses this location to
  303.                  determine which drive to write data to.
  304.  
  305. $1CED-$1CEF     These 3 bytes are unused
  306.  
  307. $1CF0  BUFST    BUFST contains the page number of the start of
  308.                  the buffer.  This buffer is used to store data
  309.                  read off the source disk.  By changing this
  310.                  location and/or BUFEN (below) you can easily
  311.                  change the buffer size and the location of
  312.                  Advanced Demuffin's buffer.  This location
  313.                  normally contains a $20 meaning that the buffer
  314.                  normally starts at $2000.
  315.  
  316. $1CF1  BUFEN    BUFEN contains the page number of the first page
  317.                  not to be included in Advanced Demuffin's
  318.                  buffer (see above).  i.e. If this location
  319.                  contained a $90 (the default value) and BUFST
  320.                  (see above) contained a $20 (the default again)
  321.                  the buffer would reside from $2000 to $8FFF
  322.                  (which it normally does).  However, this
  323.                  byte may be changed from a $90 to another
  324.                  value, such as a $B8, making the buffer much
  325.                  larger.  In this example, your buffer would be
  326.                  $9800 bytes long!  This will, of course, erase
  327.                  DOS when you attempt to convert the disk; but
  328.                  no problem - Advanced Demuffin does not require
  329.                  DOS anyway. (Not even for loading RWTS and IOB
  330.                  modules!)  Another use for changing this byte
  331.                  the one before it is to move the buffer to a
  332.                  different place.  i.e. If you had a hi-res
  333.                  screen on hi-res page 1 ($2000-$3FFF) that you
  334.                  wanted to keep in memory, you could simply
  335.                  change BUFST ($1CF0) to $40, forcing the buffer
  336.                  to start at $4000 instead of $2000 - saving
  337.                  your screen.
  338.  
  339. $1F00  DIRSEC   This page is used as a scratch page when loading
  340.                  sectors from the disk.  i.e. When loading a
  341.                  RWTS or an IOB module, the directory sector
  342.                  containing the name of the file to load will be
  343.                  read into this page.  The track and sector of
  344.                  the track/sector list will be found and the
  345.                  track/sector list will then be loaded here.
  346.  
  347. $BD00  USRRWTS  This is address JuMPed to by the default user
  348.                  RWTS.  You should either have an RWTS here or
  349.                  the IOB module should be changed to point to a
  350.                  different location.  Note the $BD00 does not
  351.                  necessarily have to be the start of the RWTS
  352.                  when using the default user IOB module, it must
  353.                  be the ENTRY POINT of the RWTS.  In fact, most
  354.                  RWTS's have a STARTING ADDRESS of $B800 but an
  355.                  ENTRY POINT at $BD00.  Keep this in mind when
  356.                  you load an RWTS module from disk.
  357.  
  358. $C000  KEYBD    These are the only hardware locations used by
  359. $C010  KEYCLR    Advanced Demuffin other than during the screen
  360.                  dump where $Cx00 is JSRed to (where x is the
  361.                  slot number).
  362.  
  363.  
  364. The following monitor routines are used by Advanced Demuffin:
  365.  
  366. $F847  GBASCALC
  367. $FB2F  INIT
  368. $FC58  HOME
  369. $FD8E  CROUT
  370. $FDED  COUT
  371. $FDF0  COUT1
  372. $FF59  MONITOR
  373. 
  374.  
  375.